Bonjour,
Le site d'un de nos clients est à accès réservé mais on peut demander à créer son compte.
Sauf qu'après la montée de version à 3.9.0, on a constaté que ça plante quand le futur utilisateur qui s'est inscrit clique sur le lien d'activation de son email qu'il a reçu : index.php?task=registration.activate&token=
J'ai le message : 0 - Call to undefined method UsersModelRegistration::getUserIdFromToken()
(Notez que ça date probablement de la mise à jour précédente, on n'a pas souvent de nouveaux inscrits et la fonction incriminante indique since 3.8.13)
Je suis allée voir dans le code de Joomla : components\com_users\controllers\registration.php où il y une portion de code supplémentaire par rapport à 3.8.12 qui appelle effectivement cette fonction.
Sauf que quand je vais voir components/com_users/models/registration.php, je trouve bien la fonction public function getUserIdFromToken($token).
Je suis loin d'être une spécialiste en Joomla et en PHP objet, du coup je ne sais pas trop comment trouver le problème qui fait que le controleur ne trouve pas la method de son model alors qu'elle existe et que tout le reste fonctionne.
Si on met en commentaires le nouveau code ci-dessous (ce qu'on ne peut pas laisser vu que c'est le core de Joomla), ça passe et un mail est envoyé à l'admin pour valider à son tour (et là ça plante mais je soupçonne que ce soit à cause du code mis en commentaires. Message d'erreur : Annonce Corps du message vide Erreur Enregistrement impossible : Une erreur est survenue lors de l'envoi de l'e-mail de notification d'activation).
Du coup, si quelqu'un a déjà eu le problème d'une fonction présente mais introuvable ou a une idée de quoi faire élucider ce mystère, ça m'aiderait beaucoup.
Merci,
Le site d'un de nos clients est à accès réservé mais on peut demander à créer son compte.
Sauf qu'après la montée de version à 3.9.0, on a constaté que ça plante quand le futur utilisateur qui s'est inscrit clique sur le lien d'activation de son email qu'il a reçu : index.php?task=registration.activate&token=
J'ai le message : 0 - Call to undefined method UsersModelRegistration::getUserIdFromToken()
(Notez que ça date probablement de la mise à jour précédente, on n'a pas souvent de nouveaux inscrits et la fonction incriminante indique since 3.8.13)
Je suis allée voir dans le code de Joomla : components\com_users\controllers\registration.php où il y une portion de code supplémentaire par rapport à 3.8.12 qui appelle effectivement cette fonction.
Sauf que quand je vais voir components/com_users/models/registration.php, je trouve bien la fonction public function getUserIdFromToken($token).
Je suis loin d'être une spécialiste en Joomla et en PHP objet, du coup je ne sais pas trop comment trouver le problème qui fait que le controleur ne trouve pas la method de son model alors qu'elle existe et que tout le reste fonctionne.
Si on met en commentaires le nouveau code ci-dessous (ce qu'on ne peut pas laisser vu que c'est le core de Joomla), ça passe et un mail est envoyé à l'admin pour valider à son tour (et là ça plante mais je soupçonne que ce soit à cause du code mis en commentaires. Message d'erreur : Annonce Corps du message vide Erreur Enregistrement impossible : Une erreur est survenue lors de l'envoi de l'e-mail de notification d'activation).
Code PHP:
// Get the User ID
$userIdToActivate = $model->getUserIdFromToken($token);
if (!$userIdToActivate)
{
JError::raiseError(403, JText::_('COM_USERS_ACTIVATION_TOKEN_NOT_FOUND'));
return false;
}
// Get the user we want to activate
$userToActivate = JFactory::getUser($userIdToActivate);
// Admin activation is on and admin is activating the account
if (($uParams->get('useractivation') == 2) && $userToActivate->getParam('activate', 0))
{
// If a user admin is not logged in, redirect them to the login page with a error message
if (!$user->authorise('core.create', 'com_users'))
{
$activationUrl = 'index.php?option=com_users&task=registration.activate&token=' . $token;
$loginUrl = 'index.php?option=com_users&view=login&return=' . base64_encode($activationUrl);
// In case we still run into this in the second step the user does not have the right permissions
$message = JText::_('COM_USERS_REGISTRATION_ACL_ADMIN_ACTIVATION_PERMISSIONS');
// When we are not logged in we should login
if ($user->guest)
{
$message = JText::_('COM_USERS_REGISTRATION_ACL_ADMIN_ACTIVATION');
}
$this->setMessage($message);
$this->setRedirect(JRoute::_($loginUrl, false));
return false;
}
}
Du coup, si quelqu'un a déjà eu le problème d'une fonction présente mais introuvable ou a une idée de quoi faire élucider ce mystère, ça m'aiderait beaucoup.
Merci,
Commentaire